#include <stdio.h>
#include <unistd.h>
#include <pthread.h>
#include <cstring>
#include <thread>
#include <vector>
#include <errno.h>
#include <cstring>

using namespace std;

// int* p;
__thread int g_val;
void *run(void *num)
{
    long n = (long)num;
    int cnt = 5;

    while (cnt--)
    {
        printf("第%d条线程,val地址:%p\n", n, &g_val);
        sleep(1);
    }
       
}

int main()
{
    vector<pthread_t> v;
    for (long i = 0; i < 3; i++)
    {
        pthread_t tid;
        pthread_create(&tid, nullptr, run, (void*)i);
        v.push_back(tid);
    }

    printf("执行\n");
    pthread_exit(nullptr);

    // sleep(1);
    //  for (auto i : v)
    //  {
    //      pthread_detach(i);
    //  }
    // printf("主线程:%p\n", &g_val);
    //  for (size_t i = 0; i < 3; i++)
    //  {
    //      int n = pthread_join(v[i], nullptr);
    //      printf("等待返回值: %d %s\n", n, strerror(n));
    //  }
}